Python3.10新特性之match语句 您所在的位置:网站首页 python中if else用法例题 Python3.10新特性之match语句

Python3.10新特性之match语句

2024-01-18 07:09| 来源: 网络整理| 查看: 265

本文主要介绍Python 3.10带来的新特性——match语句。

目录通过字典间接实现 switchPython 3.10 新特性—— match 语句默认分支在case中使用元组在case中使用判断语句小结

在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法就是通过if ... elif ... else ...语句,但是这样毕竟不够优雅,不够“Pythonic”。

更推荐的做法是通过字典(dict)实现。

通过字典间接实现 switch

想要通过字典来实现条件分支语句,首先我们需要定义一个字典,来表示不同case和返回值/函数之间的映射关系,然后再利用字典的特性,即可以实现类似于switch的功能。

下面定义一个简单的函数,传入不同的case就会打印不同的内容,也可以将打印内容的语句替换成你想要执行的函数:

def switch(case): mapping = { 1: "print('case 1')", 2: "print('case 2')" } return eval(mapping[case])

运行结果:

可以看到,输出结果正是我们想要的“case 1”的结果。

在Python 3.10出现之前,我们更多的是通过上面这种字典映射的方式,来实现类似于switch语句的功能。但是伴随着Python 3.10的发布,Python也终于迎来了自己的'switch'语句,也就是接下来我们重点介绍的match语句。

Python 3.10 新特性—— match 语句

参考资料:Python 3.10增加了比switch更强大的match表达式

在运行以下代码之前,请先确保自己的Python版本大于等于3.10。

和其他语言一样,当变量a满足哪个case的条件时,就会执行该条件下的对应代码:

a = 1 match a: case 1: print('case 1') case 2: print('case 2')

运行结果:

默认分支

当变量a不满足任意一个case条件时,如果我们没有对“其他“情况进行处理,那么是不会执行任何操作的。

下面的代码是不会有任何输出的,因为a不满足任意一个条件:

a = 3 match a: case 1: print('case 1') case 2: print('case 2')

如果想要对”其他“情况进行处理,那么写法如下:

a = 3 match a: case 1: print('case 1') case 2: print('case 2') case default: print('case default', default)

运行结果:

可以看到,当变量a不符合任意一个条件时,就会运行到我们的default分支,同时会把变量值赋值给default变量。

注意:这里的default仅仅只是一个变量名而已,并非规定写法,也可以使用其他变量名,例如x等。其作用就是在变量不符合任意一个分支条件时,将变量值赋值给该变量。

在case中使用元组

Python的match语句不仅支持数值类型的分支,也支持其他数据类型,例如元组(tuple)。

a = (2, 4) match a: case (1, 2): print('case 1') case (2, x): print('case 2', x)

运行结果:

可以看到,变量a在匹配到第二个分支条件时,还把元组的第二个元素值4赋值给了变量x。

在case中使用判断语句

不仅如此,match语句还支持在分支条件中插入判断语句:

a = (2, 2) flag = False match a: case (1, 2): print('case 1') case (2, x) if flag: print('case 2', x) case default: print('case default', default)

运行结果:

由于第二个分支条件中if flag为False,不符合条件,所以代码进入到最后一个分支条件中。

小结

以上就是今天介绍的如何使用字典实现switch语句,以及最最重要的Python 3.10的新特性——match语句。 当然,现阶段并不建议在你的Python项目中使用该新特性,因为目前主流的Python版本还不支持该特性,为了避免不必要的麻烦,还是只能先使用字典映射的方式实现了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有